草庐IT

Java OutOfMemoryError 奇怪的行为

全部标签

java - 继承后保护成员行为。

我对protected标识符有一些疑问。在K.Sierra的SunCertifiedJavaProgrammerStudyGuide第一章中,我找到了以下信息:“一旦包外的子类继承了protected成员,该成员(由子类继承)对子类之外的任何代码都是私有(private)的,子类的子类除外。”我提供了反射(reflect)上述陈述的示例代码,这对我来说是绝对清楚的。//Parentclasspackagepackage1;importpackage2.Child;publicclassParent{protectedinti=5;}//Childclasspackagepackage2

java - 在根据值对 map 进行排序时,一些值丢失了。是什么导致了这种奇怪的行为?

我正在尝试根据词频(即根据值)对map进行排序。为此,我覆盖了比较器并传递给TreeMap,但我得到了这个奇怪的输出。publicclassWordFrequency{publicstaticStringsentence="onethreetwotwothreethreefourfourfour";publicstaticMapmap;publicstaticvoidmain(String[]args){map=newHashMap();String[]words=sentence.split("\\s");for(Stringword:words){Integercount=map.

重写方法上的 Java Class.getMethods() 行为

在Java中使用反射编写简单的JSON序列化程序时,我对Class.getMethods()的行为感到措手不及。如果覆盖方法的返回类型扩展了被覆盖方法的返回类型,那么JavaClass.getMethods()似乎会同时返回覆盖方法和被覆盖方法。因此,例如给定接口(interface):staticinterfaceA{Ax();Ay();}staticinterfaceBextendsA{Bx();Ay();}A.class.getMethods()按预期返回两个方法的数组但是B.class.getMethods()返回一个包含3个方法的数组(这对我来说有点违反直觉)。在这3个中,1

java - 当我将多个自定义匹配器分配给一个方法时,Mockito 的行为很奇怪

我想为一个方法使用两个自定义匹配器。基本上,如果我传递方法VALUE_A,我希望它返回RESULT_A,如果我传递它VALUE_B,我希望它返回RESULT_B。所以这是一段代码摘录:classIsNonEmptyextendsArgumentMatcher{publicbooleanmatches(Objectget){//Forsomereason,thismethodiscalledwhenIassigntheIsEmptymatchertoMockHtable.get()//Whenthishappens,thevalueofthegetargumentisnull,sothi

java - NumberFormat Java 的奇怪行为

我有以下代码来解析一个名为str的字符串变量。NumberFormatformatter=NumberFormat.getInstance();Numbernumber=formatter.parse(str);我想捕获当str不是数字时抛出的异常,只是为了验证它。我遇到的问题是它并不总是抛出预期的ParseException。当字符串str以数字开头但随后是字符时,它似乎获取字符串的第一个字符并将它们解析为数字。例如:如果str="a10"则抛出ParseException如果str="10a"则没有异常抛出并且number=10我不能使用Double.parseDouble(str

Java CMS GC 行为

我有一个导致产生大量垃圾的应用程序。第一个(也是几乎一个)标准是低GC暂停时间。我使用visualgc工具(和gc日志)尝试不同的GC参数。最佳参数如下。-XX:+UseConcMarkSweepGC-Xmx1172M-Xms600M-XX:+UseParNewGC-XX:NewSize=150M我的应用程序在Java1.6.0_21的SunOS10上运行。硬件是2xCPU四核(uname-X结果是numCPU=8)。问题是观察GC行为,在伊甸园空间创建新对象,直到伊甸园已满。当edenspacefullGC运行时,清除垃圾,如果对象不是死副本到Old-gen(我丢弃'from'&'t

java - 奇怪的 'out' 变量,System.out.println()

以下是java.lang.System类(JDK1.6版本)的代码publicfinalstaticPrintStreamout=nullPrintStream();//outissetto'null'privatestaticPrintStreamnullPrintStream()throwsNullPointerException{if(currentTimeMillis()>0){returnnull;}thrownewNullPointerException();}当我们在代码中编写System.out.println("Something");时,为什么即使'out'设置为'

java - java中println()的不同行为

//taketheinputfromusertext=br.readLine();//converttochararraycharary[]=text.toCharArray();System.out.println("initialstringis:"+text.toCharArray());System.out.println(text.toCharArray());输出:initialstringis:[C@5603f377abcd 最佳答案 println()重载以将字符数组打印为字符串,这就是第二条打印语句正常工作的原因:

java - JPA - @PreRemove 方法行为

我有2个具有多对多关系的实体。Movie实体是此关系的所有者,因此当我想删除Actor实体时,我使用注释为@PreRemove的方法删除Moviecast中出现的任何ActorID以避免“外键违规异常”。电影课@EntitypublicclassMovieextendsAbstractBusinessObject{@ManyToManyprivateMapcast;//settersandgetterspublicvoidremoveCastMember(Actoractor){for(Entrye:cast.entrySet()){if(e.getValue().id.equals(

Java 流 forEach concurrentModificationException 异常行为

当我运行下面的代码时Listlist=IntStream.range(0,10).boxed().collect(Collectors.toList());list.stream().forEach(i->{System.out.println("i:"+i);if(i==5){System.out.println("..adding22");list.add(22);}});我得到以下输出:i:0i:1i:2i:3i:4i:5..adding22i:6i:7i:8i:9Exceptioninthread"main"java.util.ConcurrentModificationExc